from typing import List
import math


class Solution:
    def maximum_difference(self, nums: List[int]) -> int:
        ans = 0
        pre_min = math.inf
        for x in nums:
            ans = max(ans, x - pre_min)  # 把 x 当作 nums[j]
            pre_min = min(pre_min, x)  # 把 x 当作 nums[i]
        return ans if ans > 0 else -1

    # 或者使用静态方法版本：
    @staticmethod
    def maximum_difference_static(nums: List[int]) -> int:
        ans = 0
        pre_min = math.inf
        for x in nums:
            ans = max(ans, x - pre_min)
            pre_min = min(pre_min, x)
        return ans if ans > 0 else -1


# 测试代码
if __name__ == "__main__":
    solution = Solution()

    nums1 = [7, 1, 5, 4]
    print(f"输入: {nums1}")
    print(f"输出: {solution.maximum_difference(nums1)}")  # 使用实例方法
    print(f"输出: {Solution.maximum_difference_static(nums1)}")  # 使用静态方法